feat(desktop): make thread reply notifications traceable - #3754
feat(desktop): make thread reply notifications traceable#3754daveh-beep wants to merge 4 commits into
Conversation
Signed-off-by: David Hamilton <daveh@squareup.com>
…n-traceability * origin/main: fix(desktop): remove remaining Projects panel fills (block#3742) feat(mobile): desktop-parity emoji and thread experience (block#3485) desktop: restore direct community member adds (block#3634) fix(desktop): explain open agent access (block#2561) fix(cli): resolve agents from owner records (block#3178) fix(desktop): remove Projects overview card fills (block#3416) feat(replica): portable heartbeat-token fence with snapshot-local reader routing (block#3268) fix(git): channel binding tooling + author remediation for unbound repos (block#3626) feat: configure S3 URL addressing style (block#3400) feat: add first-class OpenRouter provider support (block#1975) feat(agent,acp): wire provider total_tokens through NIP-AM publish chain (block#3593) chore(release): release Buzz Desktop version 0.5.2 (block#3624) docs: add Linux rendering troubleshooting guide (block#3573) fix(desktop): discover bun-installed agent CLIs in ~/.bun/bin (block#3343) feat(tracing): correlate trace IDs in relay logs (block#3608) chore(ci): bump Linux AppImage build container to ubuntu:24.04 (block#3602) feat(cli): mirror Desktop mention delivery (block#3330) Signed-off-by: David Hamilton <daveh@squareup.com>
Signed-off-by: David Hamilton <daveh@squareup.com>
Signed-off-by: David Hamilton <daveh@squareup.com>
|
🤖 ## Proposed design — rendered by this PR's code These are not mocks. Each image is generated by pnpm build:e2e && pnpm exec playwright test --project=smoke tests/e2e/thread-unread-screenshots.spec.ts1. Sidebar signal grammarOne state per meaning, all in frame: solid count = mention/DM ( Sidebar detail at actual size: 2. Channel wayfindingFollowing the signal into the channel no longer dead-ends: the parent row carries a continuous accent spanning message + thread summary, the summary shows a legible "3 new" pill (accessible label includes the unread count), and the floating "3 new replies in threads" pill offers the direct next step. 3. DestinationClicking the pill jumps to the parent and opens the thread panel with the New divider at the exact unread boundary — notification → exact reply, zero scanning. Interactive before/after rationale (real captures of |




Summary
Problem
A reply in a followed/participated thread currently makes the channel row bold with a solid numeric badge. Opening that channel produces no visible new message because thread replies are intentionally excluded from the top-level unread divider. The only trace is muted
(N new)metadata under the parent message, which may be off-screen.This creates a signal-strength inversion: the strongest signal points at a surface with no visible payoff, while Inbox—the surface that can resolve the notification—gets the weakest signal.
Design rationale and before/after loop
https://blockcell.sqprod.co/sites/buzz-design-reel/
The reel uses Buzz's dark-theme HSL tokens, Inter Variable font, real sidebar/button dimensions, badge classes, unread divider, thread-summary treatment, and unread pill styling. It includes realistic states for channel messages, thread-only replies, mentions, DMs, muted channels, and read channels.
Test plan
just desktop-checkjust desktop-test(3824 passed)Review status
Draft for design and implementation review. Please treat the Blockcell reel as rationale/fodder, not a final spec.